package com.fyt.utils;

import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONUtil;


/**
 * @author Tunan
 * @version 1.0
 * @since 2023/11/1
 * 远程代码沙箱（实际调用接口的沙箱）
 */
public class RemoteCodeSandbox {

    // 定义鉴权请求头和密钥
    private static final String AUTH_REQUEST_HEADER = "auth";

    private static final String AUTH_REQUEST_SECRET = "secretKey";

    /**
     * 调用远程代码沙箱 执行代码
     * @param executeCodeRequest 执行代码请求（用例，用户代码，语言）
     * @return 执行代码响应（执行结果，接口信息，执行状态，判题信息）
     */
    public static ExecuteCodeResponse executeCode(ExecuteCodeRequest executeCodeRequest) {
        String url = "http://47.109.104.147:7999/execute";
        String json = JSONUtil.toJsonStr(executeCodeRequest);
        String responseStr = HttpUtil.createPost(url)
                .header(AUTH_REQUEST_HEADER, AUTH_REQUEST_SECRET)
                .body(json)
                .execute()
                .body();
        return JSONUtil.toBean(responseStr, ExecuteCodeResponse.class);
    }
}
